<?php

/**
 * @author PeoneEr
 * @package aion personal cabinet v1.0
 * @copyright Aion Factory Inc. 2010-2011
 * @license GNU v3
 * @link Ai-Factory.ru && http://code.google.com/p/aionprivateofficev2
 */
require_once "core/application/models/mchangelogin/mchangelogin.php";
require_once "core/application/classes/errorClass.php";

class changeLogin_Controller extends ChangeLogin_Model {

    private static $_instance = NULL;
    public $_lang             = NULL;
    private $_params       = array();

    public static function getInstance() {
        if (is_null(self::$_instance)) {
            $class = __CLASS__;
            self::$_instance = new $class();
        }
        return self::$_instance;
    }

    private function catchParams() {
        /**
         * @var string newLogin - содержит в себе новый логин
         * @var string password - содержит пароль для подтверждения
         * @return $newLoginData - массив
         */
        $params = array(
            'newLogin' => $_POST['newLogin'],
            'password' => $_POST['password'],
            'answer' => $_POST['answer']
        );
        return $params;
    }

    public function changeLogin() {
        /**
         *  Смена логина
         */
        $this->_lang = $this->getLanguage();
        $this->_params = $this->catchParams();
        $this->_params['newLogin'] = $this->secure($this->_params['newLogin']);
        $this->_params['password'] = $this->secure($this->_params['password']);
        $this->_params['password'] = $this->cryptPassword($this->_params['password']);
        try {
            foreach ($this->_params as $key => $val) {
                if (empty($val) || !isset($val) || is_null($val)) {
                    $this->echoError("Не введена какая-либо информация, возможно пусто поле логина или пароля");
                }
            }
        } catch (Exception $exc) {
            echo $exc->getMessage();
        }

        if ($this->_params['answer'] != $_SESSION['answer']) {
            $this->echoError("Указан не верный ответ на вопрос");
        }
        if ($this->isOnlineOneChar()) {
            $this->echoError("Один или несколько персонажей на Вашем аккаунте находятся в игре. Необходимо выйти для смены логина");
        }
        if ($this->eqPassword() != $this->_params['password']) {
            $this->echoError("Введен не верный пароль");
        }
        if ($this->issetThisLogin($this->_params['newLogin'])) {
            $this->echoError("Аккаунт с таким именем уже существует, выберете себе другой логин");
        }
        try {
            $this->setNewLoginInAccountData($this->_params['newLogin']);
            try {
                $this->setNewLoginInPlayers($this->_params['newLogin']);
                $this->echoSuccess("
                Имя аккаунта успешно изменено.
                <br />
                Имя аккаунта у всех Ваших персонажей успешно изменено. 
                Для того, что бы изменения вступили в силу необходима перезагрузка сервера. 
                Дождитесь перезагрузки сервера, и после этого попытайтесь зайти под новым логином. <br />
                Новый логин: " . $this->_params['newLogin'] . "              
                <br />
                Так же Вам необходимо <a href='index?exit'>перезайти</a> в личном кабинете.<br/>");
                $this->redirect(10, "index?exit");
                unset($this->_params, $this->_lang);
            } catch (Exception $e) {
                echo $e->getMessage();
                error::getInstance('Ошибка соединения с БД, попробуйте позже');
                unset($this->_params, $this->_lang);
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            error::getInstance('Ошибка соединения с БД, попробуйте позже');
            unset($this->_params, $this->_lang);
        }
        
    }

}

?>